
//import com.huawei.ffrt.ffrt_this_task_get_id
//import com.huawei.ffrt.ffrt_usleep
import kotlinx.cinterop.*
import platform.posix.*
import kotlinx.coroutines.*
import kotlin.concurrent.AtomicInt
import kotlin.coroutines.CoroutineContext
import kotlin.native.concurrent.*

// 基于ffrt的自定义调度器
//class FfrtDispatcher : CoroutineDispatcher() {
//
//    @OptIn(ExperimentalForeignApi::class)
//    override fun dispatch(context: CoroutineContext, block: Runnable) {
//        Task.submit({
//            block.run()
//        })
//    }
//}

/**
 * 主协程运行在: 140120270486592
 * 2025-11-6 15:49:25.195  2476  2481 D ffrt : 19:Execute:88 Execute task[3], name[t2]
 * 2025-11-6 15:49:25.196  2476  2482 D ffrt : 21:Execute:88 Execute task[4], name[t3]
 * 2025-11-6 15:49:25.198  2476  2484 D ffrt : 27:Execute:88 Execute task[6], name[t5]
 * 2025-11-6 15:49:25.198  2476  2480 D ffrt : 28:Execute:88 Execute task[2], name[t1]
 * 2025-11-6 15:49:25.201  2476  2483 D ffrt : 31:Execute:88 Execute task[5], name[t4]
 * 任务 2 在自定义线程中执行:140120190400256, gid:4
 * 任务 1 在自定义线程中执行:140120198792960, gid:3
 * 任务 4 在自定义线程中执行:140120165226240, gid:6
 * 任务 0 在自定义线程中执行:140120207185664, gid:2
 * 任务 3 在自定义线程中执行:140120182007552, gid:5
 * Segmentation fault (core dumped)
 */
@OptIn(ExperimentalForeignApi::class)
fun main() = runBlocking {
//    val customDispatcher = FfrtDispatcher()

    println("主协程运行在: ${pthread_self()}")

//    val jobs = List(5) { index ->
//        launch(customDispatcher) {
//            println("任务 $index 在自定义线程中执行:${pthread_self()}, gid:${ffrt_this_task_get_id()}")
//            ffrt_usleep(500000u);
//            println("任务 $index 完成:${pthread_self()}, gid:${ffrt_this_task_get_id()}")
//        }
//    }
//
//    jobs.forEach { it.join() }
//    println("所有任务执行完毕")
}
